#ifndef IPLUGIN_H
#define IPLUGIN_H

#include "pluginextension_global.h"
#include "pluginspec.h"
#include "pluginmanager.h"
#include "ipluginfactory.h"

class PluginManager;
class IPluginFactory;

class PLUGINEXTENSIONSHARED_EXPORT IPlugin : public QObject
{
    Q_OBJECT
public:
    IPlugin() {}
    virtual ~IPlugin() {}

    virtual bool initialize(const QStringList &arguments, QString *errorString) = 0;
    virtual void extensionsInitialized() = 0;
    virtual void shutdown() = 0;

    void addFactoryObject(IPluginFactory *obj);

private:

signals:

public slots:
};

#endif // IPLUGIN_H
